﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using FuenteDeDatos.Interfaces;
using FuenteDeDatos.FabricaDatos;
using FuenteDeDatos.Entidades;
using log4net;

namespace FuenteDeDatos.DAOSqlServer
{
    public class DAOSqlServerAccesoCredencial : IDAOAccesoCredencial
    {
        // variable para el uso de Log4Net
        private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);


        IDAOAccesoConexion bd = FabricaConexion.DaoSqlServerAccesoConexion();

        public DAOSqlServerAccesoCredencial()
        {
        }

        #region Métodos

        public bool BuscarLogin(Credencial credencial)
        {
            log.Info("DAAAAAAAAAAAAAAAAAAAAAAAAAAOOOOOOOOO");
            log.Info("----" + credencial.Alias + "-----" + credencial.Clave);
            
            SqlCommand command = new SqlCommand();
            log.Info("DAO despues de declarar command");
            try
            {
                log.Info("DAO en el try ");
                bd.AbrirConexionBd();
                log.Info("DAO abrir conexion bd ");
                command.Connection = bd.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure; //Tipo de comando que se va a ejecutar
                log.Info("DAO en el try declaracion del tipo de comando a ejcutar ");
                command.CommandText = "[dbo].[SELCredencial]"; // Nombre del Procedimiento Almacenado en la Base de Datos
                log.Info("DAO en el try asignacion del procemiento almacenado ");
                command.CommandTimeout = 10;
                log.Info("DAO en el try declaracion de los parametros____"+credencial.Alias+" y ___"+credencial.Clave);
                command.Parameters.AddWithValue("@usernameUsuario",
                    credencial.Alias);
                command.Parameters.AddWithValue("@claveUsuario",
                    credencial.Clave);
                log.Info("DAO ANTES DE EJECUTAR STORED PROCEDURES");
                SqlDataReader reader = command.ExecuteReader();

                if (reader.Read())
                {
                   return true;
                }
                log.Info("se cierra la bd");
                reader.Close();
                bd.CerrarConexionBd();
                return false;
            }

            catch (SqlException)
            {
                bd.CerrarConexionBd();
                return false;
            }

            catch (Exception)
            {
                bd.CerrarConexionBd();
                return false;
            }
        }


        #endregion
    }
}
